package com.ssy.lingxi.platform.manage.service.content;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.platform.manage.entity.content.MemberInformation;
import com.ssy.lingxi.platform.manage.model.request.common.CommonIdListRequest;
import com.ssy.lingxi.platform.manage.model.request.common.CommonIdPageRequest;
import com.ssy.lingxi.platform.manage.model.request.common.CommonIdRequest;
import com.ssy.lingxi.platform.manage.model.request.common.CommonStatusRequest;
import com.ssy.lingxi.platform.manage.model.request.content.*;
import com.ssy.lingxi.platform.manage.model.response.*;

import java.util.List;

/**
 * 内容能力-资讯管理
 * @author wyx
 * @version 2.0.0
 * @date 2021-09-28
 */
public interface IMemberInformationService {

    Wrapper<PageData<MemberInformationPageResponse>> page(MemberInformationPageRequest request, UserLoginCacheDTO user);

    Wrapper<MemberInformation> get(CommonIdRequest request);

    Wrapper<Void> add(MemberInformationRequest request, UserLoginCacheDTO user);

    Wrapper<Void> update(MemberInformationRequest request, UserLoginCacheDTO user);

    Wrapper<Void> updateStatus(CommonStatusRequest request, UserLoginCacheDTO user);

    Wrapper<Void> delete(CommonIdRequest request, UserLoginCacheDTO user);

    Wrapper<Void> batch(MemberInformationBatchRequest request, UserLoginCacheDTO user);

    Wrapper<List<MemberInformationResponse>> findAllByRecommendLabel(RecommendLabelRequest request, UserLoginCacheDTO user);

    Wrapper<List<MemberInformationResponse>> latest(UserLoginCacheDTO user);

    Wrapper<List<MemberInformationResponse>> maximumRead(UserLoginCacheDTO user);

    Wrapper<List<MemberInformationResponse>> maximumCollect(UserLoginCacheDTO user);

    Wrapper<List<MemberInformationColumnResponse>> findAllByCategory(CommonIdRequest request, UserLoginCacheDTO user);

    Wrapper<PageData<MemberInformationResponse>> pageByColumnLabel(CommonIdPageRequest request, UserLoginCacheDTO user);

    Wrapper<List<MemberInformationColumnResponse>> informationColumn(UserLoginCacheDTO user);

    Wrapper<PageData<MemberInformationResponse>> search(ContentInformationSearchRequest request, UserLoginCacheDTO user);

    Wrapper<MemberInformationResponse> findById(CommonIdRequest request, UserLoginCacheDTO user);

    Wrapper<List<MemberInformationListResponse>> findByIdIn(CommonIdListRequest request, UserLoginCacheDTO user);

    Wrapper<List<MemberInformationResponse>> related(CommonIdRequest request, UserLoginCacheDTO user);

    Wrapper<Void> collect(CollectRequest request, UserLoginCacheDTO user);

    Wrapper<PageData<ContentInformationResponse>> collectList(PageVO request, UserLoginCacheDTO user);

    Wrapper<PageData<MemberInformationListAdornResponse>> listAdorn(ContentInformationListAdornRequest request, UserLoginCacheDTO user);
}
